Generating and launching remote method invocation servers for individual client applications

ABSTRACT

A method of providing and launching private RMI servers for individual client applications is presented. A user software component such as a Web Accessible GUI is launched for a user. The user logs-in through the user component wherein a single RMI WAG Server process is provided for each client GUI or CLI invoked by the user.

CROSS REFERENCE TO RELATED APPLICATIONS

Not Applicable.

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH

Not Applicable.

FIELD OF THE INVENTION

The present invention relates generally to a system handling userrequests, and more specifically to a mechanism for providing andlaunching respective RMI servers for individual client applications.

BACKGROUND OF THE INVENTION

As is known in the art, computer systems that process and store largeamounts of data typically include one or more processors incommunication with a shared data storage system in which the data isstored. The data storage system can include one or more storage devices,such as disk drives. To minimize data loss, the computer systems canalso include a backup storage system in communication with the primaryprocessor and the data storage system.

Known backup storage systems can include a backup storage device (suchas tape storage or any other storage mechanism), together with a systemfor placing data into the storage device and recovering the data fromthat storage device. To perform a backup, the host copies data from theshared storage system across the network to the backup storage system.Thus, an actual data file can be communicated over the network to thebackup storage device.

The shared storage system corresponds to the actual physical storage.For the host to write the backup data over the network to the backupstorage system, the host first converts the backup data into file data,i.e., the host retrieves the data from the physical storage systemlevel, and converts the data into application level format (e.g. a file)through a logical volume manager level, a file system level and theapplication level. When the backup storage device receives the datafile, the backup storage system can take the application level datafile, and convert it to its appropriate format for the backup storagesystem. If the backup storage system is a tape-based device, the data isconverted to a serial format of blocks or segments.

The EMC Data Manager (EDM) is capable of such backup and restore over anetwork, as described in numerous publications available from EMC ofHopkinton, Mass., including the EDM User Guide (Network) “Basic EDMProduct Manual.” An exemplary prior art backup storage architecture inwhich a direct connection is established between the shared storagesystem and the backup storage system is described in U.S. Pat. No.6,047,294, assigned to assignee of the present invention. entitledLogical Restore from a Physical Backup in Computer Storage System, andincorporated herein by reference.

For large databases, tape-based data backup and restore systems, whichare well known in the art, can be used. In general, files, databases andthe like are copied to tape media at selected times. Typically, data isperiodically backed up to prevent the loss of data due to softwareerrors, human error, and hardware failures. Upon detection of an error,in an online database, for example, the backed up data can be restoredto effect recovery of the data. While restore refers to obtaining backedup data, data recovery refers to the entire process in whichapplications can access and use the retrieved data. Transactions sincethe time of backup can be recreated using so-called redo logs. Onedisadvantage associated with the above backup reporting mechanism, isthat multiple users may want to generate various reports on the backupprocesses which in turn results in limited availability of resources tohandle the reporting requests of the multiple users.

It would, therefore, be desirable to overcome the aforesaid and otherdisadvantages by providing a mechanism to provide and launch individualRMI servers for respective individual client applications.

SUMMARY OF THE INVENTION

A method of providing and launching private RMI servers for individualclient applications is presented. A user software component such as aWeb Accessible GUI is launched for a user. The user logs-in through theuser component wherein a single RMI WAG Server process is provided foreach client GUI or CLI invoked by the user.

In another embodiment, a computer program product is presented. Thecomputer program product includes instructions for providing a usersoftware component through which a user can login. The computer programproduct further includes instruction for providing a respective RMIserver process for each user that logs in.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention will be more fully understood from the following detaileddescription taken in conjunction with the accompanying drawings, inwhich:

FIG. 1 is a block diagram of the mechanism for providing and launchingRMI severs for respective individual client applications;

FIG. 2 is a block diagram of a server component;

FIG. 3 is a block diagram of a monitoring server middleware component;

FIG. 4 is a block diagram of a WAG server middleware component: and

FIG. 5 is a flow diagram of presently disclosed method.

DETAILED DESCRIPTION OF THE INVENTION

Referring to FIG. 1, a block diagram of a backup reporting framework 1is shown. The framework comprises a combination of components that makeit possible to provide and launch individual RMI servers for respectiveindividual client applications. The framework 1 includes a plurality ofcomponents which are resident on a backup server 30. The componentsinclude a server component 40, at least one monitoring server middlewarecomponent 50, 90 and a Remote Method invocation (RMI) web accessible GUI(WAG) server component for each respective user 60, 70 and 80. Thecomponents typically reside on a backup server 30, and provide thereporting GUIs 10, 12, and 14 to a respective remote user on the remoteuser's system 20, 22 and 24. It should be appreciated that additionalcomponents may also be incorporated as part of the framework.

Referring now to FIG. 2, a block diagram of the server component 40 isshown. The server component 40 provides the mechanisms to install andlaunch the Web Accessible GUI for use by a remote user. The servercomponent 40 includes two subcomponents, a server launcher subcomponent42 and a web server subcomponent 44. These subcomponents handle all theoperations necessary to start the GUI or CLI's interaction with themonitoring server middleware component 50 and the WAG server middlewarecomponent 60. The server launcher subcomponent 42 and the web serversubcomponent 44 are started by the operating system at boot time.

The server launcher subcomponent 42 is a persistent process used tocreate new connections and to authenticate username/password pairs foreach GUI or CLI accessing the backup server 30. The server launchersubcomponent 42 is responsible for providing new RMI WAG serverprocesses 60 for each GUI or CLI that connects to it. The connectionrequires a username and password that is authenticated by the SecurityMiddleware 65 and used to obtain a User object. If the connection issuccessful, it will determine a unique name for the new server, start upthe server (telling it what name to call itself), and pass the uniquename along with the User object back to the GUI or CLI requestingaccess.

The Server Launcher subcomponent 42 is further responsible for startinga new RMI WAG Server 60 for each GUI or CLI requesting backup services,and for making sure a Monitoring Server exists that can providemonitoring data in the correct locale. If a request for a monitoringserver 50 comes in, the server launcher 42 will determine if a runningmonitoring server exists to support the locale or if a new MonitoringServer 50 must be launched. The server launcher 42 will accept ausername and password, authenticate it, launch a private RMI WAG Serverwith a unique name, and return the User object and the name of theprivate RMI WAG Server. The name of the RMI WAG server is kept privateso that only the requesting user has access to it. This is differentthan other systems wherein the WAG server was available to any user,thus multiple users could access the same WAG server, thereby affectingthe performance off all users accessing the WAG server. The serverlauncher 42 will accept a locale and return the name of a MonitoringServer 60 appropriate for the locale.

The Web-Server sub-component 44 is the code that is necessary to installand start the Web Server as well as the HTML pages that are shipped withthe backup server. The Web Server provides the mechanisms to install aWeb Server, update the backup server to start the installed Web Serverand create the WAG HTML pages.

Referring now to FIG. 3, a block diagram of a monitoring servermiddleware component 50 is shown. The monitor server middlewarecomponent 50 provides the mechanism for the client application tointeract with the backup server 30. The monitoring server middlewarecomponent 50 gives the client side application access to data residenton the server and allows for command and control from the client side.The monitoring server middleware component 50 allows the GUI 10 to getdata about the current state of backup operations and results, and todisplay the information graphically on the user's remote system. Themonitoring server middleware component 50 includes the followingsubcomponents: an RMI Monitor server subcomponent 52, a MonitorMiddleware subcomponent 54, a Media Monitor Middleware subcomponent 56and a Backup Middleware subcomponent 58. The middleware providesmonitoring capabilities for all object types generically to helpminimize the cost of creating new object types to monitor, and reusecode throughout the different object types. The objects passed to/fromthe GUI and CLI are kept at a high level and are self-describing. TheGUI can simply get a monitor object and graphically display it withoutknowing the object type or the details of the individual object itself(i.e. workitem, lu, drive).

The public interface to the monitoring server middleware component 50 isthrough the RMI Monitor Server 52. This subcomponent acts as adispatcher to the other subcomponents that provide the functionalityrequired by the monitoring server middleware component 50. This is thegateway for which all client/server communications occurs.

The monitoring server middleware component 50 is responsible forcreating a server-side (business monitor object) model of all libraryunits, associated drives, clients and workitems upon startup.ListenerObjects are started in a separate thread at startup. This objectlistens to all of the notifies which it is registered to. Uponnotification, the server side model is updated with changes. There aretwo-models: one on the server side, and another on the client side(containing Monitorable objects), Which are kept in synch by GUIpolling.

The client GUI polls the monitoring server middleware component 50 forupdates with the timestamp of the last update via the getMonitorUpdatesmethod. The monitoring server middleware component 50 traverses themodel looking for objects which have changed since the timestamp passedin by tie client and sends back the changed Monitorable objects withnecessary information for the GUI to display. The client side traversesits model in the background, and updates it with the modified objects.The GUI update is triggered upon the data model changing.

Each of the Monitor subcomponents (Backup and Media) provides access tothe monitor data as well as the displayable definitions of each type ofmonitor object. The monitor definition specifies what a monitor objectof that particular type is, how it is to be displayed and updated. Eachmonitor definition also includes what actions can be performed on thesemonitor objects. These actions may request more user input or godirectly through to the subcomponent to perform the action on theselected result objects. Each of these subcomponents uses the JavaNative Interface (JNI) to access the backup operation API's written in Cand/or C++.

Referring now to FIG. 4 a block diagram of the WAG Server Middlewarecomponent 60 is shown. This component 60 provides a mechanism for theclient application to interact with the server. This component 60 alsogives the client side application access to data resident on the serverand allows for command and control from the client side.

The WAG Server Middleware component 60 allows the GUI or CLI to accessand change configurations, access Wizard interfaces to facilitateactivities on the backup server, as well as access, change, and executereports of several types. The WAG Server Middleware component 60provides groupings of common functionality across several types ofactivities. This allows the WAG Server Middleware component 60 toeffectively reuse code and achieve maximum maintainability. TheMiddleware provides the major functionality of abstracting verycomplicated business objects into generic GUI objects where the GUI orCLI clients need not understand the behavior of an object in order todisplay or allow users to interact with it. This methodology affords theinteractive nature of the GUI and CLI clients to be very simple,abstract, and uniform. The WAG Server Middleware component 60 is made upof the following major subcomponents: an RMI WAG Server subcomponent 61,a Domain Configuration subcomponent 62, a Wizards subcomponent 63, aReporting subcomponent 64, a Security subcomponent 65, a UserAdministration subcomponent 66, and a Domain Administration subcomponent62. A private WAG server middleware component is provided for each user.Accordingly, multiple users can run or access reports without having toshare their WAG server middleware component, thereby allowing the accessand reporting to occur in a timely and efficient manner.

The public interface to the WAG Server Middleware component 60 isthrough the RMI WAG Server 61. This is the gateway of all client/servercommunications The RMI WAG Server subcomponent 61 is the gateway for theGUI and CLI clients to communicate with the WAG Server Middlewarecomponent 60. The WAG RMI Server 61 provides the methods thatcommunicate between the GUI and CLI client to the WAG Server. It usesthe Java RMI (Remote Method Invocation) interface for communications.There is one WAG RMI Server per GUI or CLI to handle the requests.

The Domain Administration subcomponent 62 is responsible for thecreation, deletion, and modifying properties of the domain setupparameters. This includes setting a host as the domain master, domainparticipant, or individual host (not a domain participant).

The Wizard subcomponent 63 is responsible for building, distributing,and collection information from Wizard panels. It supplies the Wizardpanels, and allows generic access to the standard behaviors of a Wizard,such as Next, Prev, Finish, Cancel, and Help.

The Reporting subcomponent 64 provides the generic capability toretrieve, save, modify, and delete reports at a high level. It alsoprovides the print, email, save, and auto-schedule functionality forreport results. Each of the report portions (Backup, Events, and Media)provides access to the report data as well as the report definitions foreach type of report. The report definition specifies what a report ofthat particular type is, how it gets its results, and how the resultsare to be displayed. Each report definition also includes what actionscan be performed on the results of the report. These actions may requestmore users input or go directly through to the subcomponent to performthe action on the selected result objects.

The Security subcomponent 65 is responsible for authenticating theusername and password and returning a User object. This User object willprovide the means to determine what privileges the GUI or CLI shouldgrant the user. The other purpose for the Security subcomponent 65 is toaudit the actions performed by the user.

The User Administration subcomponent 66 is responsible for the creation,deletion, and modifying properties of users of the Web Accessible GUI.

The Configuration subcomponent 67 is responsible for retrieval andmodification of configurable parameters. This subcomponent 67 has twoparts: Backup Configuration and RASD Configuration. The BackupConfiguration portion is responsible for the retrieval, locking,modifying, and refreshing of the Backup Configuration of the EDM,including detailed configuration. It provides a way for multiple usersto view the configuration and serializes modifications to the backupconfiguration. The RASD Configuration portion is responsible for theretrieval, locking, modifying, and refreshing of the RASD Configurationof the EDM. In the situation where multiple backup servers are connectedtogether to form a domain, the present invention will allow reportgeneration and other actions based on the whole domain and not just thebackup server the user is connected to.

Having described the various components that comprise the presentinvention, the method of providing and launching RMI servers forindividual client applications will now be described. A flow chart ofthe presently disclosed method is depicted in FIG. 5. The rectangularelements, are herein-denoted “processing blocks” and represent computersoftware instructions or groups of instructions. The diamond shapedelements, are herein denoted “decision blocks,” represent computersoftware instructions, or groups of instructions which affect theexecution of the computer software instructions represented by theprocessing blocks.

Alternatively, the processing and decision blocks represent stepsperformed by functionally equivalent circuits such as a digital signalprocessor circuit or an application specific integrated circuit (ASIC).The flow diagrams do not depict the syntax of any particular programminglanguage. Rather, the flow diagrams illustrate the functionalinformation one of ordinary skill in the art requires to fabricatecircuits or to generate computer software to perform the processingrequired in accordance with the present invention. It should be notedthat many routine program elements, such as initialization of loops andvariables and the use of temporary variables are not shown. It will beappreciated by those of ordinary skill in the art that unless otherwiseindicated herein, the particular sequence of steps described isillustrative only and can be varied without departing from the spirit ofthe invention. Thus, unless otherwise stated the steps described beloware unordered meaning that, when possible, the steps can be performed inany convenient or desirable order.

The process 100 begins at step 110 wherein in order to launch the GUIfrom the web, the Web Server delivers a WAG Hyper Text Markup Language(HTML) page to the Web Browser on the user's desktop host. This pagewill reference the WAG Java Language Launcher Protocol (JNLP) file. AJNLP file is a file that the Java Web Start application uses to launchJava applications from a Web Browser. This file specifies the Jar files,security levels, and the command line arguments necessary to launch theWAG GUI application.

In order to understand the JNLP file, the user will have had to installJava Web Start on their desktop. The Web Server will provide a page todownload the Java Web Start application to the desktop. Once installed,the client browser will understand the JNLP extension and launch WebStart with the file.

At step 120 the GUI Component will prompt for a username and passwordand pass it to the Server Launcher subcomponent for verification. Uponsuccessful login, the Server Launcher subcomponent will launch a newuniquely named Remote Method Invocation (RMI) WAG Server as shown instep 130 and pass the unique name along with the User record back to theGUI Component.

At step 140, the GUI Component will also request the name of the RMIMonitoring Server. This request will include the locale being used bythe GUI Component. If the Server Launcher determines a Monitoring Serverexists which can handle the given locale, as shown in step 150, theserver launcher simply returns the name of the currently running monitorserver. If no Monitoring Server is running that supports the givenlocale, step 160 is executed wherein a new Monitoring Server is startedand the name of that server is returned.

At step 170, the remote user is provided access through the WAG and canperform various backup reporting functions such as the genericcapability to retrieve, save, modify, and delete reports at a highlevel. The user also has the ability to print, email, save, andauto-schedule functionality for report results. The remote user isprovided access through the Wag to the backup reporting data. At step180 the process terminates.

As described above, the Web Accessible GUI 10 provides a single RMI WAGServer process for each client GUI or CLI invoked by the user. The JavaRMI server architecture will start each R41 method in a separate thread.The Web Accessible GUI creates a single RMI Monitoring Server for eachlocale being used by the clients. The initial Monitoring Server isstarted under the standard locale. Each client that requests aconnection to a Monitoring Server will pass the desired locale to theServer Launcher. If the requested locale does not have a correspondingMonitoring Server, a new server is started for that client locale. Thisis necessary since the Monitoring Server will be returning displayablestrings to the client and these strings are locale-dependent. However,the WAG Server process will not call any of the JNI methods at the sametime in separate threads. The Remote Server process will ‘synchronize’these methods so that this does not occur.

There are several processes that have slightly different threadingmodels. The GUI's threading model is to have one thread handle userinteraction, events, drawing, etc., and separate threads for retrievingdata from the Middleware. When the GUI refreshes the data in a window orretrieve data for the first time, it will start a separate thread to getthe results. The main thread will create the window, bring up thewindow, and draw the window. When the data retrieval thread completes itwill load the table with the data. The WAG Server process (Middleware)will have a thread for each request made through the gateway (RMImethod).

Having described preferred embodiments of the invention it will nowbecome apparent to those of ordinary skill in the art that otherembodiments incorporating these concepts may be used. Additionally, thesoftware included as part of the invention may be embodied in a computerprogram product that includes a computer useable medium. For example,such a computer usable medium can include a readable memory device, suchas a hard drive device, a CD-ROM, a DVD-ROM, or a computer diskette,having computer readable program code segments stored thereon. Thecomputer readable medium can also include a communications link, eitheroptical, wired, or wireless, having program code segments carriedthereon as digital or analog signals. Accordingly, it is submitted thatthat the invention should not be limited to the described embodimentsbut rather should be limited only by the spirit and scope of theappended claims. All publications and references cited herein areexpressly incorporated herein by reference in their entirety.

1. A method for providing a private server for individual clientapplications comprising: launching a user component; receiving a clientlogin through the user component; determining a unique name of theprivate server after receiving the client login; accessing the privateserver for a client through a remote method invocation (RMI) mechanism;and excluding other clients from accessing the private server, whereinaccessing the private server comprises sending the unique name of theprivate server to the client and excluding other clients comprisesexcluding other clients from obtaining the unique name.
 2. The method ofclaim 1 wherein launching a user component comprises launching agraphical user interface (GUI).
 3. The method of claim 1 whereinlaunching a user component comprises launching a command line interface(CLI).
 4. The method of claim 1 wherein receiving a client loginincludes receiving a username.
 5. The method of claim 4 whereinreceiving a client login includes receiving a password associated withthe username.
 6. The method of claim 1 wherein accessing a privateserver comprises accessing a web accessible graphical user interface(WAG) server.
 7. (canceled)
 8. (canceled)
 9. The method of claim 8wherein accessing a component of the backup server system comprisesaccessing a part of a domain.
 10. A computer program product comprisinga computer usable medium having computer readable code thereon,including program code comprising: instructions for launching a usercomponent; instructions for receiving a client login through the usercomponent; instructions for determining a unique name of the privateserver after receiving the client login; instructions for accessing theprivate server for a client through a remote method invocation (RMI)mechanism; and instructions for excluding other clients from accessingthe private server, wherein the instructions for accessing the privateserver comprises instructions to send the unique name of the privateserver to the client and the instructions to exclude other clientscomprises instructions to exclude other clients from obtaining theunique name.
 11. The computer program product of claim 10 wherein theinstructions for launching a user component comprise instructions forlaunching a graphical user interface (GUI).
 12. The computer programproduct of claim 10 wherein the instructions for launching a usercomponent comprise instructions for launching a command line interface(CLI).
 13. The computer program product of claim 10 wherein theinstructions for receiving a client login include instructions forreceiving a username.
 14. The computer program product of claim 13wherein the instructions for receiving a client login includeinstructions for receiving a password associated with the username. 15.The computer program product of claim 10 wherein the private servercomprises a web accessible graphical user interface (WAG) server. 16.(canceled)
 17. (canceled)
 18. The computer program product of claim 17wherein the WAG server part of a domain.
 19. The method of claim 1,further comprising, after determining the unique name, notifying theprivate server of the unique name.
 20. The method of claim 1 whereinsending the unique name of the private server to the client comprisessending the unique name to the client after determining the unique name.21. The method of claim 1 wherein excluding other clients from obtainingthe unique name comprises not sending the unique name to the otherclients.
 22. The computer program product of claim 10, furthercomprising instructions for notifying the private server of the uniquename after determining the unique name.
 23. The computer program productof claim 10 wherein instructions for sending the unique name of theprivate server to the client comprises instructions for sending theunique name to the client after determining the unique name.
 24. Thecomputer program product of claim 10 wherein instructions to excludeother clients from obtaining the unique name comprises not sending theunique name to the other clients.